/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package efe.bean;

import java.io.Serializable;

/**
 * Wartość nagłówka przyjmująca wartości bajtowe. Przechowuje tablicę bajtów.
 * @author root
 */
public class EfeByteValue implements EfeValue, Serializable {

    protected byte bytes[] = {(byte) 0};
    protected int length = 6;

    /**
     * Get the value of length
     *
     * @return the value of length
     */
    public int getLength() {
        return length;
    }

    /**
     * Set the value of length
     *
     * @param length new value of length
     */
    public void setLength(int length) {
        this.length = length;
    }


    public boolean validate(String s) {
        s = s.trim();
        if (!s.matches("(0x[0-9a-fA-F]{2} ){" + (length - 1) + "}0x[0-9a-fA-F]{2}")) return false;
        bytes = efe.JpcapTools.hexStringToByteArray(s);
        return true;
    }

    public String display() {
        return efe.JpcapTools.byteArrayToHexString(bytes);
    }

    public String getMessage() {
        return "Dane muszą być podane w formacie: 0xXY, oddzielone spacją i " +
                "zawierać " + length + " bajtów długości.\n Pamiętaj aby nie " +
                "zostawić na końcu spacji.";
    }

    public Object getValue() {
        return bytes;
    }

}
